package dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.criteria.CriteriaQuery;

import model.Empresa;
import model.Produto;
import model.Usuario;
import util.JPAUtil;

public class EmpresaDAO {

	public void insert(Empresa empresa) {

		EntityManager em = JPAUtil.getEntityManager();
		EntityTransaction tx = em.getTransaction();
		tx.begin();
		
		Usuario usuario = em.find(Usuario.class, empresa.getUsuario().getCodigo());
		
		if(usuario != null){
			empresa.setUsuario(usuario);
			em.persist(empresa);
			tx.commit();
			System.out.println("Empresa: " + empresa.getNomeFantasia() + " inserido na base de dados com sucesso!!");
			em.clear();
		}		
	}
	
	public void update(Empresa empresa){
		
		EntityManager em = JPAUtil.getEntityManager();
		EntityTransaction tx = em.getTransaction();
		tx.begin();
		em.merge(empresa);
		tx.commit();
		em.clear();
	}
	
	public void delete(Empresa empresa){
		
		EntityManager em = JPAUtil.getEntityManager();
		EntityTransaction tx = em.getTransaction();
		tx.begin();
		em.remove(em.merge(empresa));
		tx.commit();
		em.clear();
	}
	
	public List<Empresa> selectAll() {
		
		EntityManager em = JPAUtil.getEntityManager();
		CriteriaQuery<Empresa> query = em.getCriteriaBuilder().createQuery(Empresa.class);
		query.select(query.from(Empresa.class));

		List<Empresa> lista = em.createQuery(query).getResultList();

		em.close();
		return lista;
	}
}
